﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tipler.Siniflar;
using Tipler.Enumlar;
using Tipler.DataSetler;
using DataServis;
using System.Data;

namespace IsKurallari.HataBildirim
{
    public class HataBildirimIsKurali :  TemelIsKurali
    {

        public FonksiyonSonuc<HataBildirimDataSet> HataBildirimKaydet(HataBildirimDataSet dsHataBildirim)
        {
            FonksiyonSonuc<HataBildirimDataSet> Sonuc = new FonksiyonSonuc<HataBildirimDataSet>();

            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.TopluVeriIsleme(dsHataBildirim);
                Sonuc.Sonuc = dsHataBildirim;
            }
            catch (Exception ex)
            {
                Sonuc.Sonuc = null;
                Sonuc.Ex = ex;
                Sonuc.Hata = dsHataBildirim.HataBildirim.TableName + " kaydedilemedi.";
                Sonuc.HataKod = "70001";
            }
            return Sonuc;
        }

        public FonksiyonSonuc<HataBildirimDataSet> HataBildirimGetir()
        {
            FonksiyonSonuc<HataBildirimDataSet> Sonuc = new FonksiyonSonuc<HataBildirimDataSet>();
            HataBildirimDataSet SonucDataSet = new HataBildirimDataSet();
            VeriArabirim oVeriKatmani = null;
            StringBuilder sb = new StringBuilder();

            try
            {
                oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                sb.Append(@"SELECT * FROM " + SonucDataSet.HataBildirim.TableName);
                sb.Append(" WHERE ");
                sb.Append(SonucDataSet.HataBildirim.Durum_IDColumn.ColumnName + "!=" + EnumHataBildirimDurumu.Silindi.GetHashCode());
                sb.Append(" ORDER BY " + SonucDataSet.HataBildirim.BildirimTarihiColumn.ColumnName + " DESC");

                oVeriKatmani.VeriGetir(SonucDataSet, sb.ToString());
                Sonuc.Sonuc = SonucDataSet;
            }
            catch (Exception ex)
            {
                Sonuc.Ex = ex;
                Sonuc.Hata = Sonuc.Sonuc.HataBildirim.TableName + "'dan veri okunamadı.";
                Sonuc.HataKod = "10001";
            }
            return Sonuc;
        }

        public FonksiyonSonuc<HataBildirimDataSet> HataBildirimGetir(int nBildirimID)
        {
            FonksiyonSonuc<HataBildirimDataSet> oSonuc = new FonksiyonSonuc<HataBildirimDataSet>();
            HataBildirimDataSet ds = new HataBildirimDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("HATA_BILDIRIMID", DbType.Int32, nBildirimID));

                oVeriKatmani.VeriGetir(ds, "SELECT * FROM " + ds.HataBildirim.TableName + " WHERE " + ds.HataBildirim.Durum_IDColumn.ColumnName + "!=" + EnumHataBildirimDurumu.Silindi.GetHashCode() + " AND " + ds.HataBildirim.Hata_BildirimIDColumn.ColumnName + "= " + PrmSgn + "HATA_BILDIRIMID", pParams);
                oSonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                oSonuc.Ex = ex;
                oSonuc.Hata = oSonuc.Sonuc.HataBildirim.TableName + "'dan veri okunamadı.";
                oSonuc.HataKod = "10001";
            }
            return oSonuc;
        }

        public FonksiyonSonuc<HataBildirimDataSet> KosulluHataBildirimGetir(DateTime BasTarih, DateTime SonTarih, int? nHataTuru, int? nDurum, int? nModulID, int? nKullaniciID)
        {
            FonksiyonSonuc<HataBildirimDataSet> Sonuc = new FonksiyonSonuc<HataBildirimDataSet>();

            List<IDbDataParameter> oParametreler = new List<IDbDataParameter>();
            VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

            HataBildirimDataSet SonucDataSet = new HataBildirimDataSet();
            StringBuilder sb = new StringBuilder();

            try
            {
                oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                sb.Append(@"SELECT * FROM " + SonucDataSet.HataBildirim.TableName);
                sb.Append(" WHERE " + SonucDataSet.HataBildirim.Durum_IDColumn.ColumnName + "!=" + EnumHataBildirimDurumu.Silindi.GetHashCode());

                if (SonTarih != DateTime.MinValue)
                {
                    sb.Append(" AND " + SonucDataSet.HataBildirim.BildirimTarihiColumn.ColumnName + ">=" + PrmSgn + "BasTar");
                    oParametreler.Add(oVeriKatmani.CreateParameter("BasTar", DbType.DateTime, BasTarih));
                }
                if (SonTarih != DateTime.MinValue)
                {
                    sb.Append(" AND " + SonucDataSet.HataBildirim.BildirimTarihiColumn.ColumnName + "<=" + PrmSgn + "BitTar");
                    oParametreler.Add(oVeriKatmani.CreateParameter("BitTar", DbType.DateTime, SonTarih));
                }

                if (nHataTuru.HasValue && nHataTuru != -1)
                {
                    sb.Append(" AND " + SonucDataSet.HataBildirim.Hata_TuruIDColumn.ColumnName + "=" + PrmSgn + "TURID");
                    oParametreler.Add(oVeriKatmani.CreateParameter("TURID", DbType.Int32, nHataTuru));
                }

                if (nDurum.HasValue && nDurum != -1)
                {
                    sb.Append(" AND " + SonucDataSet.HataBildirim.Durum_IDColumn.ColumnName + "=" + PrmSgn + "DURUMID");
                    oParametreler.Add(oVeriKatmani.CreateParameter("DURUMID", DbType.Int32, nDurum));
                }

                if (nModulID.HasValue && nModulID != -1)
                {
                    sb.Append(" AND " + SonucDataSet.HataBildirim.ModulIDColumn.ColumnName + "=" + PrmSgn + "MODULID");
                    oParametreler.Add(oVeriKatmani.CreateParameter("MODULID", DbType.Int32, nModulID));
                }

                if (nKullaniciID.HasValue && nKullaniciID != -1)
                {
                    sb.Append(" AND " + SonucDataSet.HataBildirim.Bildiren_KullaniciIDColumn.ColumnName + "=" + PrmSgn + "KullaniciID");
                    oParametreler.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, nKullaniciID));
                }


                sb.Append(" ORDER BY " + SonucDataSet.HataBildirim.BildirimTarihiColumn.ColumnName + " DESC");

                oVeriKatmani.VeriGetir(SonucDataSet, sb.ToString(), oParametreler);
                Sonuc.Sonuc = SonucDataSet;
            }
            catch (Exception ex)
            {
                Sonuc.Ex = ex;
                Sonuc.Hata = Sonuc.Sonuc.HataBildirim.TableName + "'dan veri okunamadı.";
                Sonuc.HataKod = "10001";
            }
            return Sonuc;
        }


    }
}
